﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace Formation_Entreprise
{
    /// <summary>
    /// Le formulaire Entreprise est utiliser afin de consulter et modifier les 
    /// informations sur une entreprise
    /// </summary>
    public partial class frmEntreprise : Form
    {
        string gDirectory;
        public frmEntreprise(objEntreprise oEntreprise)
        {
            // Initialisation 
            InitializeComponent();

            // Affectation du nom du formulaire
            this.Text = oEntreprise.Entreprise.ToString();
            
            // Affichage des informations diverses de l'entreprise sélectionner
            this.txtAdresse.Text = oEntreprise.Adresse;
            this.txtConseiller.Text = AccesTableConseiller.ObtenirNomConseiller(oEntreprise.Conseiller);
            this.txtContact.Text = oEntreprise.Contact;
            this.txtCourriel.Text = oEntreprise.Courriel;
            this.txtCodePostal.Text = oEntreprise.CodePostal;
            this.txtEntreprise.Text = oEntreprise.Entreprise;
            this.txtTelephone.Text = oEntreprise.Telephone;
            this.txtSecteurActivite.Text = oEntreprise.SecteurActivite;
            this.txtNotes.Text = oEntreprise.Note;
            this.txtVille.Text = oEntreprise.Ville;
            this.gDirectory = oEntreprise.Path;

            // Population du listbox
            this.RaffraichissementListBox();

        }


        private void btnAttach_Click(object sender, EventArgs e)
        {            
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    // Obtention du nom de fichier et du répertoire d'où vien ce fichier
                    string filePath = Path.GetDirectoryName(openFileDialog.FileName);
                    string fileName = Path.GetFileName(openFileDialog.FileName);

                    // Copie du fichier dans le répertoire de l'entreprise (définie a la création)
                    File.Copy(filePath + "\\" + fileName, gDirectory + "\\" + fileName);
                }
                catch (UnauthorizedAccessException AccessEx)
                {
                    // Envoie d'un message d'erreur afin d'informer l'usager
                    MessageBox.Show("Les permissions d'écriture qui vous sont conférées sont " +
                                    "inssufisantes pour effectuer le transfer de fichier");
                }
                finally
                {
                    // Population du listbox afin d'avoir le nouveau fichier inscrit
                    this.RaffraichissementListBox();
                }
            }
        }


        private void btnOpen_Click(object sender, EventArgs e)
        {
            // Ouverture de l'explorateur au repertoire de l'entreprise présentement ouverte
            Process.Start("explorer.exe", gDirectory);
        }


        private void btnSave_Click(object sender, EventArgs e)
        {
            // Obtention des valeurs du formulaire
            string entreprise = this.txtEntreprise.Text;
            string contact = this.txtContact.Text;
            string courriel = this.txtCourriel.Text;
            string secteur = this.txtSecteurActivite.Text;
            string adresse = this.txtAdresse.Text;
            string ville = this.txtVille.Text;
            string telephone = this.txtTelephone.Text;
            string codepostal = this.txtCodePostal.Text;
            int conseiller = AccesTableConseiller.ObtenirNumeroConseiller(this.txtConseiller.Text);
            string note = this.txtNotes.Text;

            // Appel de la methode de modification d'un entreprise
            AccesTableEntreprise.ModifierEntreprise(new objEntreprise(entreprise, contact, telephone, codepostal, adresse, ville, secteur, courriel, gDirectory, conseiller, note));
        }


        private void btnCourriel_Click(object sender, EventArgs e)
        {
            OutlookMessaging.EnvoyerMessage(this.txtCourriel.Text);
        }


        private void listFichiers_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                // Ouverture du fichier sélectionner par l'usager
                string chemin = gDirectory + "\\" + listFichiers.SelectedItem.ToString();
                Process.Start(chemin);
            }
            catch (NullReferenceException NullRefEx)
            {
                // Catch seulement utiliser afin d'assurer que 
                // le programme ne plante pas si l'usager double click
                // sans avoir sélectionner un item à ouvrir
            }
        }


        private void RaffraichissementListBox()
        {
            // Remplissage du listbox
            ManipulationFichier mf = new ManipulationFichier();
            mf.RemplirListBox(gDirectory, listFichiers);
        }
    }
}
